#include "../comm/httplib.h"
#include "compile_run.hpp"

using namespace ns_compile_and_run;
using namespace httplib;

//  int main()
//  {
//     std::string code="code";
//     Compiler::Compile(code);
//     Runner::Run(code);
//     return 0;
//  }

// 调用方式：./compile_server port
int main()
{
    Server svr;
    svr.Get("/hello", [](const Request &req, Response &resp)
            {
        // 用来进行基本测试
        resp.set_content("hello httplib,你好 httplib!", "text/plain;charset=utf-8"); });

    // 参数：req：用户的需求，resp：服务器的相应
    svr.Post("/compile_and_run", [](const Request &req, Response &resp){
    // 用户请求的服务正文就是我们想要的json string
    // in_json: {"code": "#include...", "input": "","cpu_limit":1, "mem_limit":10240}
    // out_json: {"status":"0", "reason":"","stdout":"","stderr":"",}

        std::string in_json = req.body;
        std::string out_json;
        if (!in_json.empty())
        {
            // 编译并运行用户传过来的代码
            CompileAndRun::Start(in_json, &out_json);

            // 要响应的内容
            resp.set_content(out_json, "application/json;charset=utf_8");
        }
    });


    // --- 新增的关键代码 ---
    // 设置静态资源的根目录。当请求的路径没有被上面的动态路由匹配时，
    // 服务器会尝试在 "./wwwroot" 目录下查找对应的文件。
    svr.set_base_dir("./wwwroot");
    svr.listen("0.0.0.0", 8080);
    return 0;
}